from rest_framework import serializers
from home import models

class NavSer(serializers.ModelSerializer):
    class Meta:
        model = models.Nav
        fields = '__all__'
class Banner(serializers.ModelSerializer):
    class Meta:
        model = models.Banner
        fields = '__all__'
class Cate(serializers.ModelSerializer):
    class Meta:
        model=models.Category
        fields=["id","name"] #序列化所有字段

class  CategorySer(serializers.ModelSerializer):
    #方法一对于两层的分类用嵌套足够了
    #children=Cate(many=True)
    #方法二
    #列表序列化的时候传递几个参数  （结果集,many=True）
    children=serializers.SerializerMethodField()#
    def get_children(self,obj):
        #递归实现所有的分类 都是以children的形式返回
        if obj.children.all():
            #如果有孩子返回所有孩子的序列化信息  如果没有返回的是空数据
            return CategorySer(obj.children.all(),many=True).data
        else:
            return []
    class Meta:
        model=models.Category
        fields="__all__"